Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

adding scripts and test modules #2238

Conversation

khaledyoussef24
Copy link
Contributor

Description

#1841

Changes

List of changes this PR includes

Related Issues

List of related issues

Checklist

  • Tests included
  • Build pass
  • Documentation
  • Code format and docstrings
  • Screenshots/Video attached (needed for UI changes)

@khaledyoussef24
Copy link
Contributor Author

@AlaaElattar created this branch instead of the other one.
could not resolve all the conflicts so created this one.

@Mahmoud-Emad
Copy link
Contributor

@A-Harby Can you please give it a look?

packages/grid_client/scripts/casperlabs.ts Show resolved Hide resolved
await deploy(grid3, vms);

//Get the deployment
await getDeployment(grid3, vms.name);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I get the following error while running the discourse script.

image

Copy link
Contributor

@zaelgohary zaelgohary Apr 15, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, the script should not have continued if an error happened while deploying. Same goes for all scripts.

packages/grid_client/scripts/funkwhale.ts Show resolved Hide resolved
packages/grid_client/scripts/nodepilot.ts Show resolved Hide resolved
const res = await client.machines.getObj(vms);
log("================= Getting deployment information =================");
log(res);
log(`You can access OwnCloud via the browser using: http://captain.${res[0].env.CAPROVER_ROOT_DOMAIN}`);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I got undefined.

image

packages/grid_client/scripts/umbrel.ts Show resolved Hide resolved
const res = await client.machines.getObj(vms);
log("================= Getting deployment information =================");
log(res);
log(`You can access umbrel via the browser using: http://newVMS5.${res[0].env.UMBREL_WEBSERVER_HOSTNAME}`);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

packages/grid_client/scripts/umbrel.ts Show resolved Hide resolved
packages/grid_client/scripts/umbrel.ts Show resolved Hide resolved
packages/grid_client/scripts/nodepilot.ts Show resolved Hide resolved
const res = await client.machines.getObj(vms);
log("================= Getting deployment information =================");
log(res);
log(`You can access umbrel via the browser using: http://newVMS5.${res[0].env.UMBREL_WEBSERVER_HOSTNAME}`);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

Copy link
Contributor

@zaelgohary zaelgohary left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried running the tests using 'yarn workspace @threefold/grid_client test --runInBand' as explained in the docs but all tests failed as shown below.

yarn workspace v1.22.19
yarn run v1.22.19
$ jest --runInBand
 FAIL  tests/modules/zdb.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/zdb.test.ts:4:1)

 FAIL  tests/modules/wordpress.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/wordpress.test.ts:2:1)

 FAIL  tests/modules/vm.test.ts
  ● Test suite failed to run

    tests/modules/vm.test.ts:90:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disks: any[]; flist: string; entrypoint: string; public_ip: false; planetary: true; env: { SSH_KEY: any; Test_KEY: string; }; solutionProviderId: null; }' but required in type 'MachineModel'.

     90       {
              ~
     91         name: vmName,
        ~~~~~~~~~~~~~~~~~~~~~
    ... 
    105         solutionProviderId: null,
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    106       },
        ~~~~~~~

      src/modules/models.ts:111:26
        111   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.
    tests/modules/vm.test.ts:258:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disks: { name: string; size: number; mountpoint: string; }[]; flist: string; entrypoint: string; public_ip: false; planetary: true; env: { ...; }; solutionProviderId: null; }' but required in type 'MachineModel'.

    258       {
              ~
    259         name: vmName,
        ~~~~~~~~~~~~~~~~~~~~~
    ... 
    279         solutionProviderId: null,
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    280       },
        ~~~~~~~

      src/modules/models.ts:111:26
        111   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.
    tests/modules/vm.test.ts:437:9 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disks: any[]; flist: string; entrypoint: string; public_ip: false; planetary: true; env: { SSH_KEY: any; TEST_KEY: string; }; }' but required in type 'MachineModel'.

    437   const vm1: MachineModel = {
                ~~~

      src/modules/models.ts:111:26
        111   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.
    tests/modules/vm.test.ts:454:9 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disks: any[]; flist: string; entrypoint: string; public_ip: false; planetary: true; env: { SSH_KEY: any; TEST_KEY: string; }; }' but required in type 'MachineModel'.

    454   const vm2: MachineModel = {
                ~~~

      src/modules/models.ts:111:26
        111   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.

 FAIL  tests/modules/umbrel.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/umbrel.test.ts:2:1)

 FAIL  tests/modules/tfchain.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/tfchain.test.ts:9:1)

 FAIL  tests/modules/taiga.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/taiga.test.ts:2:1)

 FAIL  tests/modules/subsquid.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/subsquid.test.ts:2:1)

 FAIL  tests/modules/stellar.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/stellar.test.ts:8:1)

 FAIL  tests/modules/qsfs.test.ts
  ● Test suite failed to run

    tests/modules/qsfs.test.ts:187:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disks: any[]; flist: string; entrypoint: string; public_ip: false; planetary: true; qsfs_disks: { qsfs_zdbs_name: string; ... 6 more ...; mountpoint: string; }[]; env: { ...; }; solutionProviderId: null; }' but required in type 'MachineModel'.

    187       {
              ~
    188         name: vmName,
        ~~~~~~~~~~~~~~~~~~~~~
    ... 
    214         solutionProviderId: null,
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    215       },
        ~~~~~~~

      src/modules/models.ts:111:26
        111   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.
    tests/modules/qsfs.test.ts:527:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disk_size: number; public_ip: false; public_ip6: false; planetary: true; qsfs_disks: { qsfs_zdbs_name: string; name: string; ... 5 more ...; mountpoint: string; }[]; }' but required in type 'KubernetesNodeModel'.

    527       {
              ~
    528         name: masterName,
        ~~~~~~~~~~~~~~~~~~~~~~~~~
    ... 
    537         qsfs_disks: qsfsDisk,
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    538       },
        ~~~~~~~

      src/modules/models.ts:159:26
        159   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.
    tests/modules/qsfs.test.ts:541:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disk_size: number; public_ip: false; public_ip6: false; planetary: true; }' but required in type 'KubernetesNodeModel'.

    541       {
              ~
    542         name: workerName,
        ~~~~~~~~~~~~~~~~~~~~~~~~~
    ... 
    550         planetary: true,
        ~~~~~~~~~~~~~~~~~~~~~~~~
    551       },
        ~~~~~~~

      src/modules/models.ts:159:26
        159   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.

 FAIL  tests/modules/presearch.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/presearch.test.ts:2:1)

 FAIL  tests/modules/peertube.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/peertube.test.ts:2:1)

 FAIL  tests/modules/owncloud.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/owncloud.test.ts:2:1)

 FAIL  tests/modules/nodepilot.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/nodepilot.test.ts:2:1)

 FAIL  tests/modules/mattermost.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/mattermost.test.ts:2:1)

 FAIL  tests/modules/kvstore.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/kvstore.test.ts:2:1)

 FAIL  tests/modules/kubernetes.test.ts
  ● Test suite failed to run

    tests/modules/kubernetes.test.ts:147:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disk_size: number; public_ip: false; public_ip6: false; planetary: true; }' but required in type 'KubernetesNodeModel'.

    147       {
              ~
    148         name: masterName,
        ~~~~~~~~~~~~~~~~~~~~~~~~~
    ... 
    156         planetary: true,
        ~~~~~~~~~~~~~~~~~~~~~~~~
    157       },
        ~~~~~~~

      src/modules/models.ts:159:26
        159   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.
    tests/modules/kubernetes.test.ts:160:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disk_size: number; public_ip: false; public_ip6: false; planetary: true; }' but required in type 'KubernetesNodeModel'.

    160       {
              ~
    161         name: workerName,
        ~~~~~~~~~~~~~~~~~~~~~~~~~
    ... 
    169         planetary: true,
        ~~~~~~~~~~~~~~~~~~~~~~~~
    170       },
        ~~~~~~~

      src/modules/models.ts:159:26
        159   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.
    tests/modules/kubernetes.test.ts:413:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disk_size: number; public_ip: false; public_ip6: false; planetary: true; }' but required in type 'KubernetesNodeModel'.

    413       {
              ~
    414         name: masterName,
        ~~~~~~~~~~~~~~~~~~~~~~~~~
    ... 
    422         planetary: true,
        ~~~~~~~~~~~~~~~~~~~~~~~~
    423       },
        ~~~~~~~

      src/modules/models.ts:159:26
        159   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.
    tests/modules/kubernetes.test.ts:426:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disk_size: number; public_ip: false; public_ip6: false; planetary: true; }' but required in type 'KubernetesNodeModel'.

    426       {
              ~
    427         name: workerName,
        ~~~~~~~~~~~~~~~~~~~~~~~~~
    ... 
    435         planetary: true,
        ~~~~~~~~~~~~~~~~~~~~~~~~
    436       },
        ~~~~~~~

      src/modules/models.ts:159:26
        159   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.
    tests/modules/kubernetes.test.ts:444:9 - error TS2739: Type '{ deployment_name: string; name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disk_size: number; public_ip: false; public_ip6: false; planetary: true; }' is missing the following properties from type 'AddWorkerModel': myceliumNetworkSeed, mycelium

    444   const worker: AddWorkerModel = {
                ~~~~~~
    tests/modules/kubernetes.test.ts:666:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disk_size: number; public_ip: false; public_ip6: false; planetary: true; }' but required in type 'KubernetesNodeModel'.

    666       {
              ~
    667         name: masterName,
        ~~~~~~~~~~~~~~~~~~~~~~~~~
    ... 
    675         planetary: true,
        ~~~~~~~~~~~~~~~~~~~~~~~~
    676       },
        ~~~~~~~

      src/modules/models.ts:159:26
        159   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.
    tests/modules/kubernetes.test.ts:679:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disk_size: number; public_ip: false; public_ip6: false; planetary: true; }' but required in type 'KubernetesNodeModel'.

    679       {
              ~
    680         name: workerName,
        ~~~~~~~~~~~~~~~~~~~~~~~~~
    ... 
    688         planetary: true,
        ~~~~~~~~~~~~~~~~~~~~~~~~
    689       },
        ~~~~~~~

      src/modules/models.ts:159:26
        159   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.

 FAIL  tests/modules/gateways.test.ts
  ● Test suite failed to run

    tests/modules/gateways.test.ts:109:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disks: any[]; flist: string; entrypoint: string; public_ip: false; planetary: true; env: { SSH_KEY: any; Test_KEY: string; }; solutionProviderId: null; }' but required in type 'MachineModel'.

    109       {
              ~
    110         name: vmName,
        ~~~~~~~~~~~~~~~~~~~~~
    ... 
    124         solutionProviderId: null,
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    125       },
        ~~~~~~~

      src/modules/models.ts:111:26
        111   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.

 FAIL  tests/modules/funkwhale.test.ts
  ● Test suite failed to run

    tests/modules/funkwhale.test.ts:33:13 - error TS2552: Cannot find name 'generateint'. Did you mean 'generateInt'?

    33   let cpu = generateint(1, 4);
                   ~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:34:16 - error TS2552: Cannot find name 'generateint'. Did you mean 'generateInt'?

    34   let memory = generateint(256, 4096);
                      ~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:35:20 - error TS2552: Cannot find name 'generateint'. Did you mean 'generateInt'?

    35   let rootfssize = generateint(2, 5);
                          ~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:36:26 - error TS2552: Cannot find name 'generatestring'. Did you mean 'generateString'?

    36   const deploymentname = generatestring(15);
                                ~~~~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:37:23 - error TS2552: Cannot find name 'generatestring'. Did you mean 'generateString'?

    37   const networkname = generatestring(15);
                             ~~~~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:38:18 - error TS2552: Cannot find name 'generatestring'. Did you mean 'generateString'?

    38   const vmname = generatestring(15);
                        ~~~~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:41:33 - error TS2552: Cannot find name 'generateint'. Did you mean 'generateInt'?

    41   const iprangeclassa = "10." + generateint(1, 255) + ".0.0/16";
                                       ~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:42:34 - error TS2552: Cannot find name 'generateint'. Did you mean 'generateInt'?

    42   const iprangeclassb = "172." + generateint(16, 31) + ".0.0/16";
                                        ~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:44:19 - error TS2552: Cannot find name 'randomchoice'. Did you mean 'randomChoice'?

    44   const iprange = randomchoice([iprangeclassa, iprangeclassb, iprangeclassc]);
                         ~~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:47:23 - error TS2552: Cannot find name 'generatestring'. Did you mean 'generateString'?

    47   const envvarvalue = generatestring(30);
                             ~~~~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:52:19 - error TS2304: Cannot find name 'gridclient'.

    52     nodes = await gridclient.capacity.filternodes({
                         ~~~~~~~~~~
    tests/modules/funkwhale.test.ts:57:27 - error TS2304: Cannot find name 'gridclient'.

    57       availablefor: await gridclient.twins.get_my_twin_id(),
                                 ~~~~~~~~~~
    tests/modules/funkwhale.test.ts:58:10 - error TS2304: Cannot find name 'filteroptions'.

    58     } as filteroptions);
                ~~~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:65:11 - error TS2304: Cannot find name 'generateint'.

    65     cpu = generateint(1, cpu);
                 ~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:66:14 - error TS2304: Cannot find name 'generateint'.

    66     memory = generateint(256, memory);
                    ~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:67:18 - error TS2304: Cannot find name 'generateint'.

    67     rootfssize = generateint(2, rootfssize);
                        ~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:70:19 - error TS2304: Cannot find name 'gridclient'.

    70     nodes = await gridclient.capacity.filternodes({
                         ~~~~~~~~~~
    tests/modules/funkwhale.test.ts:75:27 - error TS2304: Cannot find name 'gridclient'.

    75       availablefor: await gridclient.twins.get_my_twin_id(),
                                 ~~~~~~~~~~
    tests/modules/funkwhale.test.ts:76:10 - error TS2304: Cannot find name 'filteroptions'.

    76     } as filteroptions);
                ~~~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:78:24 - error TS2304: Cannot find name 'getonlinenode'.

    78   const nodeid = await getonlinenode(nodes);
                              ~~~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:79:31 - error TS2304: Cannot find name 'error'.

    79   if (nodeid == -1) throw new error("no nodes available to complete this test");
                                     ~~~~~
    tests/modules/funkwhale.test.ts:82:14 - error TS2304: Cannot find name 'machinesmodel'.

    82   const vms: machinesmodel = {
                    ~~~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:116:21 - error TS2304: Cannot find name 'gridclient'.

    116   const res = await gridclient.machines.deploy(vms);
                            ~~~~~~~~~~
    tests/modules/funkwhale.test.ts:120:33 - error TS2551: Property 'tohavelength' does not exist on type 'JestMatchers<any>'. Did you mean 'toHaveLength'?

    120   expect(res.contracts.created).tohavelength(1);
                                        ~~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:1037:9
        1037         toHaveLength(expected: number): R;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toHaveLength' is declared here.
    tests/modules/funkwhale.test.ts:121:33 - error TS2551: Property 'tohavelength' does not exist on type 'JestMatchers<any>'. Did you mean 'toHaveLength'?

    121   expect(res.contracts.updated).tohavelength(0);
                                        ~~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:1037:9
        1037         toHaveLength(expected: number): R;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toHaveLength' is declared here.
    tests/modules/funkwhale.test.ts:122:33 - error TS2551: Property 'tohavelength' does not exist on type 'JestMatchers<any>'. Did you mean 'toHaveLength'?

    122   expect(res.contracts.deleted).tohavelength(0);
                                        ~~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:1037:9
        1037         toHaveLength(expected: number): R;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toHaveLength' is declared here.
    tests/modules/funkwhale.test.ts:124:25 - error TS2304: Cannot find name 'gridclient'.

    124   const vmslist = await gridclient.machines.list();
                                ~~~~~~~~~~
    tests/modules/funkwhale.test.ts:128:26 - error TS2551: Property 'tobegreaterthanorequal' does not exist on type 'JestMatchers<any>'. Did you mean 'toBeGreaterThanOrEqual'?

    128   expect(vmslist.length).tobegreaterthanorequal(1);
                                 ~~~~~~~~~~~~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:924:9
        924         toBeGreaterThanOrEqual(expected: number | bigint): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBeGreaterThanOrEqual' is declared here.
    tests/modules/funkwhale.test.ts:129:19 - error TS2551: Property 'tocontain' does not exist on type 'JestMatchers<any>'. Did you mean 'toContain'?

    129   expect(vmslist).tocontain(vms.name);
                          ~~~~~~~~~

      node_modules/@types/jest/index.d.ts:970:9
        970         toContain<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toContain' is declared here.
    tests/modules/funkwhale.test.ts:131:24 - error TS2304: Cannot find name 'gridclient'.

    131   const result = await gridclient.machines.getobj(vms.name);
                               ~~~~~~~~~~
    tests/modules/funkwhale.test.ts:135:28 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    135   expect(result[0].nodeid).tobe(nodeid);
                                   ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/funkwhale.test.ts:136:28 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    136   expect(result[0].status).tobe("ok");
                                   ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/funkwhale.test.ts:137:27 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    137   expect(result[0].flist).tobe(vms.machines[0].flist);
                                  ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/funkwhale.test.ts:138:32 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    138   expect(result[0].entrypoint).tobe(vms.machines[0].entrypoint);
                                       ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/funkwhale.test.ts:139:28 - error TS2551: Property 'tohavelength' does not exist on type 'JestMatchers<any>'. Did you mean 'toHaveLength'?

    139   expect(result[0].mounts).tohavelength(0);
                                   ~~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:1037:9
        1037         toHaveLength(expected: number): R;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toHaveLength' is declared here.
    tests/modules/funkwhale.test.ts:140:46 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    140   expect(result[0].interfaces[0]["network"]).tobe(vms.network.name);
                                                     ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/funkwhale.test.ts:141:41 - error TS2551: Property 'tocontain' does not exist on type 'JestMatchers<any>'. Did you mean 'toContain'?

    141   expect(result[0].interfaces[0]["ip"]).tocontain(splitip(vms.network.ip_range));
                                                ~~~~~~~~~

      node_modules/@types/jest/index.d.ts:970:9
        970         toContain<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toContain' is declared here.
    tests/modules/funkwhale.test.ts:141:51 - error TS2304: Cannot find name 'splitip'.

    141   expect(result[0].interfaces[0]["ip"]).tocontain(splitip(vms.network.ip_range));
                                                          ~~~~~~~
    tests/modules/funkwhale.test.ts:142:41 - error TS2551: Property 'tomatch' does not exist on type 'JestMatchers<any>'. Did you mean 'toMatch'?

    142   expect(result[0].interfaces[0]["ip"]).tomatch(ipregex);
                                                ~~~~~~~

      node_modules/@types/jest/index.d.ts:1083:9
        1083         toMatch(expected: string | RegExp): R;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toMatch' is declared here.
    tests/modules/funkwhale.test.ts:142:49 - error TS2304: Cannot find name 'ipregex'.

    142   expect(result[0].interfaces[0]["ip"]).tomatch(ipregex);
                                                        ~~~~~~~
    tests/modules/funkwhale.test.ts:143:37 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    143   expect(result[0].capacity["cpu"]).tobe(cpu);
                                            ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/funkwhale.test.ts:144:40 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    144   expect(result[0].capacity["memory"]).tobe(memory);
                                               ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/funkwhale.test.ts:145:31 - error TS2551: Property 'tobedefined' does not exist on type 'JestMatchers<any>'. Did you mean 'toBeDefined'?

    145   expect(result[0].planetary).tobedefined();
                                      ~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:911:9
        911         toBeDefined(): R;
                    ~~~~~~~~~~~~~~~~~
        'toBeDefined' is declared here.
    tests/modules/funkwhale.test.ts:146:30 - error TS2551: Property 'tobenull' does not exist on type 'JestMatchers<any>'. Did you mean 'toBeNull'?

    146   expect(result[0].publicip).tobenull();
                                     ~~~~~~~~

      node_modules/@types/jest/index.d.ts:946:9
        946         toBeNull(): R;
                    ~~~~~~~~~~~~~~
        'toBeNull' is declared here.
    tests/modules/funkwhale.test.ts:147:30 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    147   expect(result[0].metadata).tobe(metadata);
                                     ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/funkwhale.test.ts:148:33 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    148   expect(result[0].description).tobe(description);
                                        ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/funkwhale.test.ts:154:21 - error TS2304: Cannot find name 'remoterun'.

    154   const ssh = await remoterun(host, user);
                            ~~~~~~~~~
    tests/modules/funkwhale.test.ts:160:29 - error TS2551: Property 'tocontain' does not exist on type 'JestMatchers<any>'. Did you mean 'toContain'?

    160       expect(result.stdout).tocontain(envvarvalue);
                                    ~~~~~~~~~

      node_modules/@types/jest/index.d.ts:970:9
        970         toContain<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toContain' is declared here.
    tests/modules/funkwhale.test.ts:166:29 - error TS2551: Property 'tocontain' does not exist on type 'JestMatchers<any>'. Did you mean 'toContain'?

    166       expect(result.stdout).tocontain("funkwhale: running");
                                    ~~~~~~~~~

      node_modules/@types/jest/index.d.ts:970:9
        970         toContain<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toContain' is declared here.

 FAIL  tests/modules/discourse.test.ts
  ● Test suite failed to run

    tests/modules/discourse.test.ts:33:13 - error TS2552: Cannot find name 'generateint'. Did you mean 'generateInt'?

    33   let cpu = generateint(1, 4);
                   ~~~~~~~~~~~
    tests/modules/discourse.test.ts:34:16 - error TS2552: Cannot find name 'generateint'. Did you mean 'generateInt'?

    34   let memory = generateint(256, 4096);
                      ~~~~~~~~~~~
    tests/modules/discourse.test.ts:35:20 - error TS2552: Cannot find name 'generateint'. Did you mean 'generateInt'?

    35   let rootfssize = generateint(2, 5);
                          ~~~~~~~~~~~
    tests/modules/discourse.test.ts:36:26 - error TS2552: Cannot find name 'generatestring'. Did you mean 'generateString'?

    36   const deploymentname = generatestring(15);
                                ~~~~~~~~~~~~~~
    tests/modules/discourse.test.ts:37:23 - error TS2552: Cannot find name 'generatestring'. Did you mean 'generateString'?

    37   const networkname = generatestring(15);
                             ~~~~~~~~~~~~~~
    tests/modules/discourse.test.ts:38:18 - error TS2552: Cannot find name 'generatestring'. Did you mean 'generateString'?

    38   const vmname = generatestring(15);
                        ~~~~~~~~~~~~~~
    tests/modules/discourse.test.ts:41:33 - error TS2552: Cannot find name 'generateint'. Did you mean 'generateInt'?

    41   const iprangeclassa = "10." + generateint(1, 255) + ".0.0/16";
                                       ~~~~~~~~~~~
    tests/modules/discourse.test.ts:42:34 - error TS2552: Cannot find name 'generateint'. Did you mean 'generateInt'?

    42   const iprangeclassb = "172." + generateint(16, 31) + ".0.0/16";
                                        ~~~~~~~~~~~
    tests/modules/discourse.test.ts:44:19 - error TS2552: Cannot find name 'randomchoice'. Did you mean 'randomChoice'?

    44   const iprange = randomchoice([iprangeclassa, iprangeclassb, iprangeclassc]);
                         ~~~~~~~~~~~~
    tests/modules/discourse.test.ts:47:23 - error TS2552: Cannot find name 'generatestring'. Did you mean 'generateString'?

    47   const envvarvalue = generatestring(30);
                             ~~~~~~~~~~~~~~
    tests/modules/discourse.test.ts:52:19 - error TS2304: Cannot find name 'gridclient'.

    52     nodes = await gridclient.capacity.filternodes({
                         ~~~~~~~~~~
    tests/modules/discourse.test.ts:57:27 - error TS2304: Cannot find name 'gridclient'.

    57       availablefor: await gridclient.twins.get_my_twin_id(),
                                 ~~~~~~~~~~
    tests/modules/discourse.test.ts:58:10 - error TS2304: Cannot find name 'filteroptions'.

    58     } as filteroptions);
                ~~~~~~~~~~~~~
    tests/modules/discourse.test.ts:65:11 - error TS2304: Cannot find name 'generateint'.

    65     cpu = generateint(1, cpu);
                 ~~~~~~~~~~~
    tests/modules/discourse.test.ts:66:14 - error TS2304: Cannot find name 'generateint'.

    66     memory = generateint(256, memory);
                    ~~~~~~~~~~~
    tests/modules/discourse.test.ts:67:18 - error TS2304: Cannot find name 'generateint'.

    67     rootfssize = generateint(2, rootfssize);
                        ~~~~~~~~~~~
    tests/modules/discourse.test.ts:70:19 - error TS2304: Cannot find name 'gridclient'.

    70     nodes = await gridclient.capacity.filternodes({
                         ~~~~~~~~~~
    tests/modules/discourse.test.ts:75:27 - error TS2304: Cannot find name 'gridclient'.

    75       availablefor: await gridclient.twins.get_my_twin_id(),
                                 ~~~~~~~~~~
    tests/modules/discourse.test.ts:76:10 - error TS2304: Cannot find name 'filteroptions'.

    76     } as filteroptions);
                ~~~~~~~~~~~~~
    tests/modules/discourse.test.ts:78:24 - error TS2304: Cannot find name 'getonlinenode'.

    78   const nodeid = await getonlinenode(nodes);
                              ~~~~~~~~~~~~~
    tests/modules/discourse.test.ts:79:31 - error TS2304: Cannot find name 'error'.

    79   if (nodeid == -1) throw new error("no nodes available to complete this test");
                                     ~~~~~
    tests/modules/discourse.test.ts:82:14 - error TS2304: Cannot find name 'machinesmodel'.

    82   const vms: machinesmodel = {
                    ~~~~~~~~~~~~~
    tests/modules/discourse.test.ts:121:21 - error TS2304: Cannot find name 'gridclient'.

    121   const res = await gridclient.machines.deploy(vms);
                            ~~~~~~~~~~
    tests/modules/discourse.test.ts:125:33 - error TS2551: Property 'tohavelength' does not exist on type 'JestMatchers<any>'. Did you mean 'toHaveLength'?

    125   expect(res.contracts.created).tohavelength(1);
                                        ~~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:1037:9
        1037         toHaveLength(expected: number): R;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toHaveLength' is declared here.
    tests/modules/discourse.test.ts:126:33 - error TS2551: Property 'tohavelength' does not exist on type 'JestMatchers<any>'. Did you mean 'toHaveLength'?

    126   expect(res.contracts.updated).tohavelength(0);
                                        ~~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:1037:9
        1037         toHaveLength(expected: number): R;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toHaveLength' is declared here.
    tests/modules/discourse.test.ts:127:33 - error TS2551: Property 'tohavelength' does not exist on type 'JestMatchers<any>'. Did you mean 'toHaveLength'?

    127   expect(res.contracts.deleted).tohavelength(0);
                                        ~~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:1037:9
        1037         toHaveLength(expected: number): R;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toHaveLength' is declared here.
    tests/modules/discourse.test.ts:129:25 - error TS2304: Cannot find name 'gridclient'.

    129   const vmslist = await gridclient.machines.list();
                                ~~~~~~~~~~
    tests/modules/discourse.test.ts:133:26 - error TS2551: Property 'tobegreaterthanorequal' does not exist on type 'JestMatchers<any>'. Did you mean 'toBeGreaterThanOrEqual'?

    133   expect(vmslist.length).tobegreaterthanorequal(1);
                                 ~~~~~~~~~~~~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:924:9
        924         toBeGreaterThanOrEqual(expected: number | bigint): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBeGreaterThanOrEqual' is declared here.
    tests/modules/discourse.test.ts:134:19 - error TS2551: Property 'tocontain' does not exist on type 'JestMatchers<any>'. Did you mean 'toContain'?

    134   expect(vmslist).tocontain(vms.name);
                          ~~~~~~~~~

      node_modules/@types/jest/index.d.ts:970:9
        970         toContain<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toContain' is declared here.
    tests/modules/discourse.test.ts:136:24 - error TS2304: Cannot find name 'gridclient'.

    136   const result = await gridclient.machines.getobj(vms.name);
                               ~~~~~~~~~~
    tests/modules/discourse.test.ts:140:28 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    140   expect(result[0].nodeid).tobe(nodeid);
                                   ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/discourse.test.ts:141:28 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    141   expect(result[0].status).tobe("ok");
                                   ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/discourse.test.ts:142:27 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    142   expect(result[0].flist).tobe(vms.machines[0].flist);
                                  ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/discourse.test.ts:143:32 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    143   expect(result[0].entrypoint).tobe(vms.machines[0].entrypoint);
                                       ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/discourse.test.ts:144:28 - error TS2551: Property 'tohavelength' does not exist on type 'JestMatchers<any>'. Did you mean 'toHaveLength'?

    144   expect(result[0].mounts).tohavelength(0);
                                   ~~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:1037:9
        1037         toHaveLength(expected: number): R;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toHaveLength' is declared here.
    tests/modules/discourse.test.ts:145:46 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    145   expect(result[0].interfaces[0]["network"]).tobe(vms.network.name);
                                                     ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/discourse.test.ts:146:41 - error TS2551: Property 'tocontain' does not exist on type 'JestMatchers<any>'. Did you mean 'toContain'?

    146   expect(result[0].interfaces[0]["ip"]).tocontain(splitip(vms.network.ip_range));
                                                ~~~~~~~~~

      node_modules/@types/jest/index.d.ts:970:9
        970         toContain<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toContain' is declared here.
    tests/modules/discourse.test.ts:146:51 - error TS2304: Cannot find name 'splitip'.

    146   expect(result[0].interfaces[0]["ip"]).tocontain(splitip(vms.network.ip_range));
                                                          ~~~~~~~
    tests/modules/discourse.test.ts:147:41 - error TS2551: Property 'tomatch' does not exist on type 'JestMatchers<any>'. Did you mean 'toMatch'?

    147   expect(result[0].interfaces[0]["ip"]).tomatch(ipregex);
                                                ~~~~~~~

      node_modules/@types/jest/index.d.ts:1083:9
        1083         toMatch(expected: string | RegExp): R;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toMatch' is declared here.
    tests/modules/discourse.test.ts:147:49 - error TS2304: Cannot find name 'ipregex'.

    147   expect(result[0].interfaces[0]["ip"]).tomatch(ipregex);
                                                        ~~~~~~~
    tests/modules/discourse.test.ts:148:37 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    148   expect(result[0].capacity["cpu"]).tobe(cpu);
                                            ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/discourse.test.ts:149:40 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    149   expect(result[0].capacity["memory"]).tobe(memory);
                                               ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/discourse.test.ts:150:31 - error TS2551: Property 'tobedefined' does not exist on type 'JestMatchers<any>'. Did you mean 'toBeDefined'?

    150   expect(result[0].planetary).tobedefined();
                                      ~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:911:9
        911         toBeDefined(): R;
                    ~~~~~~~~~~~~~~~~~
        'toBeDefined' is declared here.
    tests/modules/discourse.test.ts:151:30 - error TS2551: Property 'tobenull' does not exist on type 'JestMatchers<any>'. Did you mean 'toBeNull'?

    151   expect(result[0].publicip).tobenull();
                                     ~~~~~~~~

      node_modules/@types/jest/index.d.ts:946:9
        946         toBeNull(): R;
                    ~~~~~~~~~~~~~~
        'toBeNull' is declared here.
    tests/modules/discourse.test.ts:152:30 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    152   expect(result[0].metadata).tobe(metadata);
                                     ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/discourse.test.ts:153:33 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    153   expect(result[0].description).tobe(description);
                                        ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/discourse.test.ts:159:21 - error TS2304: Cannot find name 'remoterun'.

    159   const ssh = await remoterun(host, user);
                            ~~~~~~~~~
    tests/modules/discourse.test.ts:165:29 - error TS2551: Property 'tocontain' does not exist on type 'JestMatchers<any>'. Did you mean 'toContain'?

    165       expect(result.stdout).tocontain(envvarvalue);
                                    ~~~~~~~~~

      node_modules/@types/jest/index.d.ts:970:9
        970         toContain<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toContain' is declared here.
    tests/modules/discourse.test.ts:171:29 - error TS2551: Property 'tocontain' does not exist on type 'JestMatchers<any>'. Did you mean 'toContain'?

    171       expect(result.stdout).tocontain("discourse: running");
                                    ~~~~~~~~~

      node_modules/@types/jest/index.d.ts:970:9
        970         toContain<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toContain' is declared here.

 FAIL  tests/modules/contracts.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/contracts.test.ts:12:1)

 FAIL  tests/modules/casperlabs.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/casperlabs.test.ts:2:1)

 FAIL  tests/modules/capacity_planner.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/capacity_planner.test.ts:11:1)

 FAIL  tests/modules/algorand.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/algorand.test.ts:8:1)

Summary of all failing tests
 FAIL  tests/modules/zdb.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/zdb.test.ts:4:1)

 FAIL  tests/modules/wordpress.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/wordpress.test.ts:2:1)

 FAIL  tests/modules/vm.test.ts
  ● Test suite failed to run

    tests/modules/vm.test.ts:90:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disks: any[]; flist: string; entrypoint: string; public_ip: false; planetary: true; env: { SSH_KEY: any; Test_KEY: string; }; solutionProviderId: null; }' but required in type 'MachineModel'.

     90       {
              ~
     91         name: vmName,
        ~~~~~~~~~~~~~~~~~~~~~
    ... 
    105         solutionProviderId: null,
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    106       },
        ~~~~~~~

      src/modules/models.ts:111:26
        111   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.
    tests/modules/vm.test.ts:258:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disks: { name: string; size: number; mountpoint: string; }[]; flist: string; entrypoint: string; public_ip: false; planetary: true; env: { ...; }; solutionProviderId: null; }' but required in type 'MachineModel'.

    258       {
              ~
    259         name: vmName,
        ~~~~~~~~~~~~~~~~~~~~~
    ... 
    279         solutionProviderId: null,
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    280       },
        ~~~~~~~

      src/modules/models.ts:111:26
        111   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.
    tests/modules/vm.test.ts:437:9 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disks: any[]; flist: string; entrypoint: string; public_ip: false; planetary: true; env: { SSH_KEY: any; TEST_KEY: string; }; }' but required in type 'MachineModel'.

    437   const vm1: MachineModel = {
                ~~~

      src/modules/models.ts:111:26
        111   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.
    tests/modules/vm.test.ts:454:9 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disks: any[]; flist: string; entrypoint: string; public_ip: false; planetary: true; env: { SSH_KEY: any; TEST_KEY: string; }; }' but required in type 'MachineModel'.

    454   const vm2: MachineModel = {
                ~~~

      src/modules/models.ts:111:26
        111   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.

 FAIL  tests/modules/umbrel.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/umbrel.test.ts:2:1)

 FAIL  tests/modules/tfchain.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/tfchain.test.ts:9:1)

 FAIL  tests/modules/taiga.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/taiga.test.ts:2:1)

 FAIL  tests/modules/subsquid.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/subsquid.test.ts:2:1)

 FAIL  tests/modules/stellar.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/stellar.test.ts:8:1)

 FAIL  tests/modules/qsfs.test.ts
  ● Test suite failed to run

    tests/modules/qsfs.test.ts:187:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disks: any[]; flist: string; entrypoint: string; public_ip: false; planetary: true; qsfs_disks: { qsfs_zdbs_name: string; ... 6 more ...; mountpoint: string; }[]; env: { ...; }; solutionProviderId: null; }' but required in type 'MachineModel'.

    187       {
              ~
    188         name: vmName,
        ~~~~~~~~~~~~~~~~~~~~~
    ... 
    214         solutionProviderId: null,
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    215       },
        ~~~~~~~

      src/modules/models.ts:111:26
        111   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.
    tests/modules/qsfs.test.ts:527:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disk_size: number; public_ip: false; public_ip6: false; planetary: true; qsfs_disks: { qsfs_zdbs_name: string; name: string; ... 5 more ...; mountpoint: string; }[]; }' but required in type 'KubernetesNodeModel'.

    527       {
              ~
    528         name: masterName,
        ~~~~~~~~~~~~~~~~~~~~~~~~~
    ... 
    537         qsfs_disks: qsfsDisk,
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    538       },
        ~~~~~~~

      src/modules/models.ts:159:26
        159   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.
    tests/modules/qsfs.test.ts:541:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disk_size: number; public_ip: false; public_ip6: false; planetary: true; }' but required in type 'KubernetesNodeModel'.

    541       {
              ~
    542         name: workerName,
        ~~~~~~~~~~~~~~~~~~~~~~~~~
    ... 
    550         planetary: true,
        ~~~~~~~~~~~~~~~~~~~~~~~~
    551       },
        ~~~~~~~

      src/modules/models.ts:159:26
        159   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.

 FAIL  tests/modules/presearch.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/presearch.test.ts:2:1)

 FAIL  tests/modules/peertube.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/peertube.test.ts:2:1)

 FAIL  tests/modules/owncloud.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/owncloud.test.ts:2:1)

 FAIL  tests/modules/nodepilot.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/nodepilot.test.ts:2:1)

 FAIL  tests/modules/mattermost.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/mattermost.test.ts:2:1)

 FAIL  tests/modules/kvstore.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/kvstore.test.ts:2:1)

 FAIL  tests/modules/kubernetes.test.ts
  ● Test suite failed to run

    tests/modules/kubernetes.test.ts:147:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disk_size: number; public_ip: false; public_ip6: false; planetary: true; }' but required in type 'KubernetesNodeModel'.

    147       {
              ~
    148         name: masterName,
        ~~~~~~~~~~~~~~~~~~~~~~~~~
    ... 
    156         planetary: true,
        ~~~~~~~~~~~~~~~~~~~~~~~~
    157       },
        ~~~~~~~

      src/modules/models.ts:159:26
        159   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.
    tests/modules/kubernetes.test.ts:160:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disk_size: number; public_ip: false; public_ip6: false; planetary: true; }' but required in type 'KubernetesNodeModel'.

    160       {
              ~
    161         name: workerName,
        ~~~~~~~~~~~~~~~~~~~~~~~~~
    ... 
    169         planetary: true,
        ~~~~~~~~~~~~~~~~~~~~~~~~
    170       },
        ~~~~~~~

      src/modules/models.ts:159:26
        159   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.
    tests/modules/kubernetes.test.ts:413:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disk_size: number; public_ip: false; public_ip6: false; planetary: true; }' but required in type 'KubernetesNodeModel'.

    413       {
              ~
    414         name: masterName,
        ~~~~~~~~~~~~~~~~~~~~~~~~~
    ... 
    422         planetary: true,
        ~~~~~~~~~~~~~~~~~~~~~~~~
    423       },
        ~~~~~~~

      src/modules/models.ts:159:26
        159   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.
    tests/modules/kubernetes.test.ts:426:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disk_size: number; public_ip: false; public_ip6: false; planetary: true; }' but required in type 'KubernetesNodeModel'.

    426       {
              ~
    427         name: workerName,
        ~~~~~~~~~~~~~~~~~~~~~~~~~
    ... 
    435         planetary: true,
        ~~~~~~~~~~~~~~~~~~~~~~~~
    436       },
        ~~~~~~~

      src/modules/models.ts:159:26
        159   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.
    tests/modules/kubernetes.test.ts:444:9 - error TS2739: Type '{ deployment_name: string; name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disk_size: number; public_ip: false; public_ip6: false; planetary: true; }' is missing the following properties from type 'AddWorkerModel': myceliumNetworkSeed, mycelium

    444   const worker: AddWorkerModel = {
                ~~~~~~
    tests/modules/kubernetes.test.ts:666:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disk_size: number; public_ip: false; public_ip6: false; planetary: true; }' but required in type 'KubernetesNodeModel'.

    666       {
              ~
    667         name: masterName,
        ~~~~~~~~~~~~~~~~~~~~~~~~~
    ... 
    675         planetary: true,
        ~~~~~~~~~~~~~~~~~~~~~~~~
    676       },
        ~~~~~~~

      src/modules/models.ts:159:26
        159   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.
    tests/modules/kubernetes.test.ts:679:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disk_size: number; public_ip: false; public_ip6: false; planetary: true; }' but required in type 'KubernetesNodeModel'.

    679       {
              ~
    680         name: workerName,
        ~~~~~~~~~~~~~~~~~~~~~~~~~
    ... 
    688         planetary: true,
        ~~~~~~~~~~~~~~~~~~~~~~~~
    689       },
        ~~~~~~~

      src/modules/models.ts:159:26
        159   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.

 FAIL  tests/modules/gateways.test.ts
  ● Test suite failed to run

    tests/modules/gateways.test.ts:109:7 - error TS2741: Property 'mycelium' is missing in type '{ name: string; node_id: any; cpu: number; memory: number; rootfs_size: number; disks: any[]; flist: string; entrypoint: string; public_ip: false; planetary: true; env: { SSH_KEY: any; Test_KEY: string; }; solutionProviderId: null; }' but required in type 'MachineModel'.

    109       {
              ~
    110         name: vmName,
        ~~~~~~~~~~~~~~~~~~~~~
    ... 
    124         solutionProviderId: null,
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    125       },
        ~~~~~~~

      src/modules/models.ts:111:26
        111   @Expose() @IsBoolean() mycelium: boolean;
                                     ~~~~~~~~
        'mycelium' is declared here.

 FAIL  tests/modules/funkwhale.test.ts
  ● Test suite failed to run

    tests/modules/funkwhale.test.ts:33:13 - error TS2552: Cannot find name 'generateint'. Did you mean 'generateInt'?

    33   let cpu = generateint(1, 4);
                   ~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:34:16 - error TS2552: Cannot find name 'generateint'. Did you mean 'generateInt'?

    34   let memory = generateint(256, 4096);
                      ~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:35:20 - error TS2552: Cannot find name 'generateint'. Did you mean 'generateInt'?

    35   let rootfssize = generateint(2, 5);
                          ~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:36:26 - error TS2552: Cannot find name 'generatestring'. Did you mean 'generateString'?

    36   const deploymentname = generatestring(15);
                                ~~~~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:37:23 - error TS2552: Cannot find name 'generatestring'. Did you mean 'generateString'?

    37   const networkname = generatestring(15);
                             ~~~~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:38:18 - error TS2552: Cannot find name 'generatestring'. Did you mean 'generateString'?

    38   const vmname = generatestring(15);
                        ~~~~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:41:33 - error TS2552: Cannot find name 'generateint'. Did you mean 'generateInt'?

    41   const iprangeclassa = "10." + generateint(1, 255) + ".0.0/16";
                                       ~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:42:34 - error TS2552: Cannot find name 'generateint'. Did you mean 'generateInt'?

    42   const iprangeclassb = "172." + generateint(16, 31) + ".0.0/16";
                                        ~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:44:19 - error TS2552: Cannot find name 'randomchoice'. Did you mean 'randomChoice'?

    44   const iprange = randomchoice([iprangeclassa, iprangeclassb, iprangeclassc]);
                         ~~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:47:23 - error TS2552: Cannot find name 'generatestring'. Did you mean 'generateString'?

    47   const envvarvalue = generatestring(30);
                             ~~~~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:52:19 - error TS2304: Cannot find name 'gridclient'.

    52     nodes = await gridclient.capacity.filternodes({
                         ~~~~~~~~~~
    tests/modules/funkwhale.test.ts:57:27 - error TS2304: Cannot find name 'gridclient'.

    57       availablefor: await gridclient.twins.get_my_twin_id(),
                                 ~~~~~~~~~~
    tests/modules/funkwhale.test.ts:58:10 - error TS2304: Cannot find name 'filteroptions'.

    58     } as filteroptions);
                ~~~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:65:11 - error TS2304: Cannot find name 'generateint'.

    65     cpu = generateint(1, cpu);
                 ~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:66:14 - error TS2304: Cannot find name 'generateint'.

    66     memory = generateint(256, memory);
                    ~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:67:18 - error TS2304: Cannot find name 'generateint'.

    67     rootfssize = generateint(2, rootfssize);
                        ~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:70:19 - error TS2304: Cannot find name 'gridclient'.

    70     nodes = await gridclient.capacity.filternodes({
                         ~~~~~~~~~~
    tests/modules/funkwhale.test.ts:75:27 - error TS2304: Cannot find name 'gridclient'.

    75       availablefor: await gridclient.twins.get_my_twin_id(),
                                 ~~~~~~~~~~
    tests/modules/funkwhale.test.ts:76:10 - error TS2304: Cannot find name 'filteroptions'.

    76     } as filteroptions);
                ~~~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:78:24 - error TS2304: Cannot find name 'getonlinenode'.

    78   const nodeid = await getonlinenode(nodes);
                              ~~~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:79:31 - error TS2304: Cannot find name 'error'.

    79   if (nodeid == -1) throw new error("no nodes available to complete this test");
                                     ~~~~~
    tests/modules/funkwhale.test.ts:82:14 - error TS2304: Cannot find name 'machinesmodel'.

    82   const vms: machinesmodel = {
                    ~~~~~~~~~~~~~
    tests/modules/funkwhale.test.ts:116:21 - error TS2304: Cannot find name 'gridclient'.

    116   const res = await gridclient.machines.deploy(vms);
                            ~~~~~~~~~~
    tests/modules/funkwhale.test.ts:120:33 - error TS2551: Property 'tohavelength' does not exist on type 'JestMatchers<any>'. Did you mean 'toHaveLength'?

    120   expect(res.contracts.created).tohavelength(1);
                                        ~~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:1037:9
        1037         toHaveLength(expected: number): R;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toHaveLength' is declared here.
    tests/modules/funkwhale.test.ts:121:33 - error TS2551: Property 'tohavelength' does not exist on type 'JestMatchers<any>'. Did you mean 'toHaveLength'?

    121   expect(res.contracts.updated).tohavelength(0);
                                        ~~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:1037:9
        1037         toHaveLength(expected: number): R;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toHaveLength' is declared here.
    tests/modules/funkwhale.test.ts:122:33 - error TS2551: Property 'tohavelength' does not exist on type 'JestMatchers<any>'. Did you mean 'toHaveLength'?

    122   expect(res.contracts.deleted).tohavelength(0);
                                        ~~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:1037:9
        1037         toHaveLength(expected: number): R;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toHaveLength' is declared here.
    tests/modules/funkwhale.test.ts:124:25 - error TS2304: Cannot find name 'gridclient'.

    124   const vmslist = await gridclient.machines.list();
                                ~~~~~~~~~~
    tests/modules/funkwhale.test.ts:128:26 - error TS2551: Property 'tobegreaterthanorequal' does not exist on type 'JestMatchers<any>'. Did you mean 'toBeGreaterThanOrEqual'?

    128   expect(vmslist.length).tobegreaterthanorequal(1);
                                 ~~~~~~~~~~~~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:924:9
        924         toBeGreaterThanOrEqual(expected: number | bigint): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBeGreaterThanOrEqual' is declared here.
    tests/modules/funkwhale.test.ts:129:19 - error TS2551: Property 'tocontain' does not exist on type 'JestMatchers<any>'. Did you mean 'toContain'?

    129   expect(vmslist).tocontain(vms.name);
                          ~~~~~~~~~

      node_modules/@types/jest/index.d.ts:970:9
        970         toContain<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toContain' is declared here.
    tests/modules/funkwhale.test.ts:131:24 - error TS2304: Cannot find name 'gridclient'.

    131   const result = await gridclient.machines.getobj(vms.name);
                               ~~~~~~~~~~
    tests/modules/funkwhale.test.ts:135:28 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    135   expect(result[0].nodeid).tobe(nodeid);
                                   ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/funkwhale.test.ts:136:28 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    136   expect(result[0].status).tobe("ok");
                                   ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/funkwhale.test.ts:137:27 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    137   expect(result[0].flist).tobe(vms.machines[0].flist);
                                  ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/funkwhale.test.ts:138:32 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    138   expect(result[0].entrypoint).tobe(vms.machines[0].entrypoint);
                                       ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/funkwhale.test.ts:139:28 - error TS2551: Property 'tohavelength' does not exist on type 'JestMatchers<any>'. Did you mean 'toHaveLength'?

    139   expect(result[0].mounts).tohavelength(0);
                                   ~~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:1037:9
        1037         toHaveLength(expected: number): R;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toHaveLength' is declared here.
    tests/modules/funkwhale.test.ts:140:46 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    140   expect(result[0].interfaces[0]["network"]).tobe(vms.network.name);
                                                     ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/funkwhale.test.ts:141:41 - error TS2551: Property 'tocontain' does not exist on type 'JestMatchers<any>'. Did you mean 'toContain'?

    141   expect(result[0].interfaces[0]["ip"]).tocontain(splitip(vms.network.ip_range));
                                                ~~~~~~~~~

      node_modules/@types/jest/index.d.ts:970:9
        970         toContain<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toContain' is declared here.
    tests/modules/funkwhale.test.ts:141:51 - error TS2304: Cannot find name 'splitip'.

    141   expect(result[0].interfaces[0]["ip"]).tocontain(splitip(vms.network.ip_range));
                                                          ~~~~~~~
    tests/modules/funkwhale.test.ts:142:41 - error TS2551: Property 'tomatch' does not exist on type 'JestMatchers<any>'. Did you mean 'toMatch'?

    142   expect(result[0].interfaces[0]["ip"]).tomatch(ipregex);
                                                ~~~~~~~

      node_modules/@types/jest/index.d.ts:1083:9
        1083         toMatch(expected: string | RegExp): R;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toMatch' is declared here.
    tests/modules/funkwhale.test.ts:142:49 - error TS2304: Cannot find name 'ipregex'.

    142   expect(result[0].interfaces[0]["ip"]).tomatch(ipregex);
                                                        ~~~~~~~
    tests/modules/funkwhale.test.ts:143:37 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    143   expect(result[0].capacity["cpu"]).tobe(cpu);
                                            ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/funkwhale.test.ts:144:40 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    144   expect(result[0].capacity["memory"]).tobe(memory);
                                               ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/funkwhale.test.ts:145:31 - error TS2551: Property 'tobedefined' does not exist on type 'JestMatchers<any>'. Did you mean 'toBeDefined'?

    145   expect(result[0].planetary).tobedefined();
                                      ~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:911:9
        911         toBeDefined(): R;
                    ~~~~~~~~~~~~~~~~~
        'toBeDefined' is declared here.
    tests/modules/funkwhale.test.ts:146:30 - error TS2551: Property 'tobenull' does not exist on type 'JestMatchers<any>'. Did you mean 'toBeNull'?

    146   expect(result[0].publicip).tobenull();
                                     ~~~~~~~~

      node_modules/@types/jest/index.d.ts:946:9
        946         toBeNull(): R;
                    ~~~~~~~~~~~~~~
        'toBeNull' is declared here.
    tests/modules/funkwhale.test.ts:147:30 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    147   expect(result[0].metadata).tobe(metadata);
                                     ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/funkwhale.test.ts:148:33 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    148   expect(result[0].description).tobe(description);
                                        ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/funkwhale.test.ts:154:21 - error TS2304: Cannot find name 'remoterun'.

    154   const ssh = await remoterun(host, user);
                            ~~~~~~~~~
    tests/modules/funkwhale.test.ts:160:29 - error TS2551: Property 'tocontain' does not exist on type 'JestMatchers<any>'. Did you mean 'toContain'?

    160       expect(result.stdout).tocontain(envvarvalue);
                                    ~~~~~~~~~

      node_modules/@types/jest/index.d.ts:970:9
        970         toContain<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toContain' is declared here.
    tests/modules/funkwhale.test.ts:166:29 - error TS2551: Property 'tocontain' does not exist on type 'JestMatchers<any>'. Did you mean 'toContain'?

    166       expect(result.stdout).tocontain("funkwhale: running");
                                    ~~~~~~~~~

      node_modules/@types/jest/index.d.ts:970:9
        970         toContain<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toContain' is declared here.

 FAIL  tests/modules/discourse.test.ts
  ● Test suite failed to run

    tests/modules/discourse.test.ts:33:13 - error TS2552: Cannot find name 'generateint'. Did you mean 'generateInt'?

    33   let cpu = generateint(1, 4);
                   ~~~~~~~~~~~
    tests/modules/discourse.test.ts:34:16 - error TS2552: Cannot find name 'generateint'. Did you mean 'generateInt'?

    34   let memory = generateint(256, 4096);
                      ~~~~~~~~~~~
    tests/modules/discourse.test.ts:35:20 - error TS2552: Cannot find name 'generateint'. Did you mean 'generateInt'?

    35   let rootfssize = generateint(2, 5);
                          ~~~~~~~~~~~
    tests/modules/discourse.test.ts:36:26 - error TS2552: Cannot find name 'generatestring'. Did you mean 'generateString'?

    36   const deploymentname = generatestring(15);
                                ~~~~~~~~~~~~~~
    tests/modules/discourse.test.ts:37:23 - error TS2552: Cannot find name 'generatestring'. Did you mean 'generateString'?

    37   const networkname = generatestring(15);
                             ~~~~~~~~~~~~~~
    tests/modules/discourse.test.ts:38:18 - error TS2552: Cannot find name 'generatestring'. Did you mean 'generateString'?

    38   const vmname = generatestring(15);
                        ~~~~~~~~~~~~~~
    tests/modules/discourse.test.ts:41:33 - error TS2552: Cannot find name 'generateint'. Did you mean 'generateInt'?

    41   const iprangeclassa = "10." + generateint(1, 255) + ".0.0/16";
                                       ~~~~~~~~~~~
    tests/modules/discourse.test.ts:42:34 - error TS2552: Cannot find name 'generateint'. Did you mean 'generateInt'?

    42   const iprangeclassb = "172." + generateint(16, 31) + ".0.0/16";
                                        ~~~~~~~~~~~
    tests/modules/discourse.test.ts:44:19 - error TS2552: Cannot find name 'randomchoice'. Did you mean 'randomChoice'?

    44   const iprange = randomchoice([iprangeclassa, iprangeclassb, iprangeclassc]);
                         ~~~~~~~~~~~~
    tests/modules/discourse.test.ts:47:23 - error TS2552: Cannot find name 'generatestring'. Did you mean 'generateString'?

    47   const envvarvalue = generatestring(30);
                             ~~~~~~~~~~~~~~
    tests/modules/discourse.test.ts:52:19 - error TS2304: Cannot find name 'gridclient'.

    52     nodes = await gridclient.capacity.filternodes({
                         ~~~~~~~~~~
    tests/modules/discourse.test.ts:57:27 - error TS2304: Cannot find name 'gridclient'.

    57       availablefor: await gridclient.twins.get_my_twin_id(),
                                 ~~~~~~~~~~
    tests/modules/discourse.test.ts:58:10 - error TS2304: Cannot find name 'filteroptions'.

    58     } as filteroptions);
                ~~~~~~~~~~~~~
    tests/modules/discourse.test.ts:65:11 - error TS2304: Cannot find name 'generateint'.

    65     cpu = generateint(1, cpu);
                 ~~~~~~~~~~~
    tests/modules/discourse.test.ts:66:14 - error TS2304: Cannot find name 'generateint'.

    66     memory = generateint(256, memory);
                    ~~~~~~~~~~~
    tests/modules/discourse.test.ts:67:18 - error TS2304: Cannot find name 'generateint'.

    67     rootfssize = generateint(2, rootfssize);
                        ~~~~~~~~~~~
    tests/modules/discourse.test.ts:70:19 - error TS2304: Cannot find name 'gridclient'.

    70     nodes = await gridclient.capacity.filternodes({
                         ~~~~~~~~~~
    tests/modules/discourse.test.ts:75:27 - error TS2304: Cannot find name 'gridclient'.

    75       availablefor: await gridclient.twins.get_my_twin_id(),
                                 ~~~~~~~~~~
    tests/modules/discourse.test.ts:76:10 - error TS2304: Cannot find name 'filteroptions'.

    76     } as filteroptions);
                ~~~~~~~~~~~~~
    tests/modules/discourse.test.ts:78:24 - error TS2304: Cannot find name 'getonlinenode'.

    78   const nodeid = await getonlinenode(nodes);
                              ~~~~~~~~~~~~~
    tests/modules/discourse.test.ts:79:31 - error TS2304: Cannot find name 'error'.

    79   if (nodeid == -1) throw new error("no nodes available to complete this test");
                                     ~~~~~
    tests/modules/discourse.test.ts:82:14 - error TS2304: Cannot find name 'machinesmodel'.

    82   const vms: machinesmodel = {
                    ~~~~~~~~~~~~~
    tests/modules/discourse.test.ts:121:21 - error TS2304: Cannot find name 'gridclient'.

    121   const res = await gridclient.machines.deploy(vms);
                            ~~~~~~~~~~
    tests/modules/discourse.test.ts:125:33 - error TS2551: Property 'tohavelength' does not exist on type 'JestMatchers<any>'. Did you mean 'toHaveLength'?

    125   expect(res.contracts.created).tohavelength(1);
                                        ~~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:1037:9
        1037         toHaveLength(expected: number): R;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toHaveLength' is declared here.
    tests/modules/discourse.test.ts:126:33 - error TS2551: Property 'tohavelength' does not exist on type 'JestMatchers<any>'. Did you mean 'toHaveLength'?

    126   expect(res.contracts.updated).tohavelength(0);
                                        ~~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:1037:9
        1037         toHaveLength(expected: number): R;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toHaveLength' is declared here.
    tests/modules/discourse.test.ts:127:33 - error TS2551: Property 'tohavelength' does not exist on type 'JestMatchers<any>'. Did you mean 'toHaveLength'?

    127   expect(res.contracts.deleted).tohavelength(0);
                                        ~~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:1037:9
        1037         toHaveLength(expected: number): R;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toHaveLength' is declared here.
    tests/modules/discourse.test.ts:129:25 - error TS2304: Cannot find name 'gridclient'.

    129   const vmslist = await gridclient.machines.list();
                                ~~~~~~~~~~
    tests/modules/discourse.test.ts:133:26 - error TS2551: Property 'tobegreaterthanorequal' does not exist on type 'JestMatchers<any>'. Did you mean 'toBeGreaterThanOrEqual'?

    133   expect(vmslist.length).tobegreaterthanorequal(1);
                                 ~~~~~~~~~~~~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:924:9
        924         toBeGreaterThanOrEqual(expected: number | bigint): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBeGreaterThanOrEqual' is declared here.
    tests/modules/discourse.test.ts:134:19 - error TS2551: Property 'tocontain' does not exist on type 'JestMatchers<any>'. Did you mean 'toContain'?

    134   expect(vmslist).tocontain(vms.name);
                          ~~~~~~~~~

      node_modules/@types/jest/index.d.ts:970:9
        970         toContain<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toContain' is declared here.
    tests/modules/discourse.test.ts:136:24 - error TS2304: Cannot find name 'gridclient'.

    136   const result = await gridclient.machines.getobj(vms.name);
                               ~~~~~~~~~~
    tests/modules/discourse.test.ts:140:28 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    140   expect(result[0].nodeid).tobe(nodeid);
                                   ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/discourse.test.ts:141:28 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    141   expect(result[0].status).tobe("ok");
                                   ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/discourse.test.ts:142:27 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    142   expect(result[0].flist).tobe(vms.machines[0].flist);
                                  ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/discourse.test.ts:143:32 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    143   expect(result[0].entrypoint).tobe(vms.machines[0].entrypoint);
                                       ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/discourse.test.ts:144:28 - error TS2551: Property 'tohavelength' does not exist on type 'JestMatchers<any>'. Did you mean 'toHaveLength'?

    144   expect(result[0].mounts).tohavelength(0);
                                   ~~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:1037:9
        1037         toHaveLength(expected: number): R;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toHaveLength' is declared here.
    tests/modules/discourse.test.ts:145:46 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    145   expect(result[0].interfaces[0]["network"]).tobe(vms.network.name);
                                                     ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/discourse.test.ts:146:41 - error TS2551: Property 'tocontain' does not exist on type 'JestMatchers<any>'. Did you mean 'toContain'?

    146   expect(result[0].interfaces[0]["ip"]).tocontain(splitip(vms.network.ip_range));
                                                ~~~~~~~~~

      node_modules/@types/jest/index.d.ts:970:9
        970         toContain<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toContain' is declared here.
    tests/modules/discourse.test.ts:146:51 - error TS2304: Cannot find name 'splitip'.

    146   expect(result[0].interfaces[0]["ip"]).tocontain(splitip(vms.network.ip_range));
                                                          ~~~~~~~
    tests/modules/discourse.test.ts:147:41 - error TS2551: Property 'tomatch' does not exist on type 'JestMatchers<any>'. Did you mean 'toMatch'?

    147   expect(result[0].interfaces[0]["ip"]).tomatch(ipregex);
                                                ~~~~~~~

      node_modules/@types/jest/index.d.ts:1083:9
        1083         toMatch(expected: string | RegExp): R;
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toMatch' is declared here.
    tests/modules/discourse.test.ts:147:49 - error TS2304: Cannot find name 'ipregex'.

    147   expect(result[0].interfaces[0]["ip"]).tomatch(ipregex);
                                                        ~~~~~~~
    tests/modules/discourse.test.ts:148:37 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    148   expect(result[0].capacity["cpu"]).tobe(cpu);
                                            ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/discourse.test.ts:149:40 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    149   expect(result[0].capacity["memory"]).tobe(memory);
                                               ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/discourse.test.ts:150:31 - error TS2551: Property 'tobedefined' does not exist on type 'JestMatchers<any>'. Did you mean 'toBeDefined'?

    150   expect(result[0].planetary).tobedefined();
                                      ~~~~~~~~~~~

      node_modules/@types/jest/index.d.ts:911:9
        911         toBeDefined(): R;
                    ~~~~~~~~~~~~~~~~~
        'toBeDefined' is declared here.
    tests/modules/discourse.test.ts:151:30 - error TS2551: Property 'tobenull' does not exist on type 'JestMatchers<any>'. Did you mean 'toBeNull'?

    151   expect(result[0].publicip).tobenull();
                                     ~~~~~~~~

      node_modules/@types/jest/index.d.ts:946:9
        946         toBeNull(): R;
                    ~~~~~~~~~~~~~~
        'toBeNull' is declared here.
    tests/modules/discourse.test.ts:152:30 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    152   expect(result[0].metadata).tobe(metadata);
                                     ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/discourse.test.ts:153:33 - error TS2551: Property 'tobe' does not exist on type 'JestMatchers<any>'. Did you mean 'toBe'?

    153   expect(result[0].description).tobe(description);
                                        ~~~~

      node_modules/@types/jest/index.d.ts:885:9
        885         toBe<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toBe' is declared here.
    tests/modules/discourse.test.ts:159:21 - error TS2304: Cannot find name 'remoterun'.

    159   const ssh = await remoterun(host, user);
                            ~~~~~~~~~
    tests/modules/discourse.test.ts:165:29 - error TS2551: Property 'tocontain' does not exist on type 'JestMatchers<any>'. Did you mean 'toContain'?

    165       expect(result.stdout).tocontain(envvarvalue);
                                    ~~~~~~~~~

      node_modules/@types/jest/index.d.ts:970:9
        970         toContain<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toContain' is declared here.
    tests/modules/discourse.test.ts:171:29 - error TS2551: Property 'tocontain' does not exist on type 'JestMatchers<any>'. Did you mean 'toContain'?

    171       expect(result.stdout).tocontain("discourse: running");
                                    ~~~~~~~~~

      node_modules/@types/jest/index.d.ts:970:9
        970         toContain<E = any>(expected: E): R;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        'toContain' is declared here.

 FAIL  tests/modules/contracts.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/contracts.test.ts:12:1)

 FAIL  tests/modules/casperlabs.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/casperlabs.test.ts:2:1)

 FAIL  tests/modules/capacity_planner.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/capacity_planner.test.ts:11:1)

 FAIL  tests/modules/algorand.test.ts
  ● Test suite failed to run

    EACCES: permission denied, open '/home/zainab/.ssh/id_ed25519.pub'

      10 | const mnemonic = env.MNEMONIC;
      11 | const storeSecret = env.STORE_SECRET;
    > 12 | const ssh_key = fs.readFileSync(os.homedir() + "/.ssh/id_ed25519.pub", "utf-8");
         |                    ^
      13 | let config;
      14 |
      15 | if (!network || !mnemonic || !ssh_key) {

      at Object.<anonymous> (tests/client_loader.ts:12:20)
      at Object.<anonymous> (tests/modules/algorand.test.ts:8:1)


Test Suites: 23 failed, 23 total
Tests:       0 total
Snapshots:   0 total
Time:        20.67 s
Ran all test suites.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
error Command failed.
Exit code: 1

@khaledyoussef24
Copy link
Contributor Author

@zaelgohary I will check for it and make sure that also docs is fine.

@khaledyoussef24 khaledyoussef24 changed the title adding mycelium flag adding scripts and test modules Apr 16, 2024
@Mahmoud-Emad
Copy link
Contributor

@khaledyoussef24
If you still working on it, please draft it :)

@khaledyoussef24 khaledyoussef24 marked this pull request as draft May 7, 2024 08:39
@khaledyoussef24
Copy link
Contributor Author

will delete this branch and make 2 other prs one for solution scripts and the other for test modules

@khaledyoussef24 khaledyoussef24 mentioned this pull request May 9, 2024
5 tasks
@khaledyoussef24 khaledyoussef24 deleted the development_adding_applications_scripts_and_test_modules branch May 19, 2024 09:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants